home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / PIL / PpmImagePlugin.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  3KB  |  102 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __version__ = '0.2'
  5. import string
  6. import Image
  7. import ImageFile
  8. MODES = {
  9.     'P4': '1',
  10.     'P5': 'L',
  11.     'P6': 'RGB',
  12.     'P0CMYK': 'CMYK',
  13.     'PyP': 'P',
  14.     'PyRGBA': 'RGBA',
  15.     'PyCMYK': 'CMYK' }
  16.  
  17. def _accept(prefix):
  18.     if prefix[0] == 'P':
  19.         pass
  20.     return prefix[1] in '0456y'
  21.  
  22.  
  23. class PpmImageFile(ImageFile.ImageFile):
  24.     format = 'PPM'
  25.     format_description = 'Pbmplus image'
  26.     
  27.     def _token(self, s = ''):
  28.         while None:
  29.             c = self.fp.read(1)
  30.             if not c or c in string.whitespace:
  31.                 break
  32.             
  33.             s = s + c
  34.             continue
  35.             return s
  36.  
  37.     
  38.     def _open(self):
  39.         s = self.fp.read(1)
  40.         if s != 'P':
  41.             raise SyntaxError, 'not a PPM file'
  42.         
  43.         mode = MODES[self._token(s)]
  44.         if mode == '1':
  45.             self.mode = '1'
  46.             rawmode = '1;I'
  47.         else:
  48.             self.mode = rawmode = mode
  49.         for ix in range(3):
  50.             while None:
  51.                 while None:
  52.                     s = self.fp.read(1)
  53.                     if s not in string.whitespace:
  54.                         break
  55.                         continue
  56.                     continue
  57.                     if s != '#':
  58.                         break
  59.                     
  60.                 s = self.fp.readline()
  61.                 continue
  62.                 s = int(self._token(s))
  63.                 if ix == 0:
  64.                     xsize = s
  65.                     continue
  66.             if ix == 1:
  67.                 ysize = s
  68.                 if mode == '1':
  69.                     break
  70.                 
  71.             mode == '1'
  72.         
  73.         self.size = (xsize, ysize)
  74.         self.tile = [
  75.             ('raw', (0, 0, xsize, ysize), self.fp.tell(), (rawmode, 0, 1))]
  76.  
  77.  
  78.  
  79. def _save(im, fp, filename):
  80.     if im.mode == '1':
  81.         (rawmode, head) = ('1;I', 'P4')
  82.     elif im.mode == 'L':
  83.         (rawmode, head) = ('L', 'P5')
  84.     elif im.mode == 'RGB':
  85.         (rawmode, head) = ('RGB', 'P6')
  86.     elif im.mode == 'RGBA':
  87.         (rawmode, head) = ('RGB', 'P6')
  88.     else:
  89.         raise IOError, 'cannot write mode %s as PPM' % im.mode
  90.     fp.write(head + '\n%d %d\n' % im.size)
  91.     if head != 'P4':
  92.         fp.write('255\n')
  93.     
  94.     ImageFile._save(im, fp, [
  95.         ('raw', (0, 0) + im.size, 0, (rawmode, 0, 1))])
  96.  
  97. Image.register_open('PPM', PpmImageFile, _accept)
  98. Image.register_save('PPM', _save)
  99. Image.register_extension('PPM', '.pbm')
  100. Image.register_extension('PPM', '.pgm')
  101. Image.register_extension('PPM', '.ppm')
  102.